package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.Arrays;

/**
 * @Author yaya
 * @Create 2024/5/29 14:43
 * Description: String转自定义泛型
 */
// Converter <S,T> S:源数据，T:要转换成的数据
// 如果每个泛型都要配置这个转换器会很繁琐，所以可以使用简单工厂来简化
// @Component
public class StringToItemTypeConverter implements Converter<String, ItemType> {

    // 如果使用ItemType接收数据，String会通过这个方法转换数据，如果没匹配到泛型中的数据，则抛出异常
    @Override
    public ItemType convert(String source) {
        return Arrays.stream(ItemType.values())
                .filter(itemType -> source.equals(""+itemType.getCode()))
                .findFirst()
                .orElseThrow(IllegalArgumentException::new) ;
    }
}
